// source --> https://sportvitalitas.hu/static/js/all.js
/**
* main javascript
*
* @package RaiseApp
* @version RaiseApp 2.0.0
*/
/*-----------------------------------------------------------------------------------
Table of Contents:
-----------------------------------------------------------------------------------
1. Menu
2. SmoothScrolling
3. Tooltip
4. Message Box
5. Bootstrap Responsive Tab
6. carousel for client boxes
7. Parallax animation
8. Text animation
9. Progress Bar
10. Counter
11. Get star marks
12. Get countdown info
13. Filter Box
14. Masonry Grid
15. Slick slider
16. Pre-load
17. pricing table
18. Smooth Scrolling to Target
19. go to top
20. Audio,
21. Social Sharing in header
22. Datepicker
-----------------------------------------------------------------------------------*/
(function ($) {
// use strict
"use strict";
// document ready
$(document).ready(function () {
// 1. Menu
// 1.1 load menu
(function () {
var _opener = $(".btn-overlay-open");
var _closer = $(".btn-overlay-close");
var _menuPanel = $(".sa-overlay");
_opener.on("click", function () {
_opener.hide();
if (!_menuPanel.hasClass("open")) {
_menuPanel.addClass("open");
}
return false;
});
_closer.on("click", function () {
_opener.show("slow");
_menuPanel.removeClass("open");
return false;
})
})();
var topbarHeight = $(".topbar-variation").length && $(".topbar-variation").is(":visible") ? $(".topbar-variation").height() : 0;
// 1.2 resizeTopMenu
var highLightMenu = function () {
var topNav = $(".x-menu-fixed-top");
var highlighted = "x-highlight";
if ($(document).scrollTop() > topbarHeight) {
if (!topNav.hasClass(highlighted)) {
topNav.addClass(highlighted);
}
} else {
if (topNav.hasClass(highlighted)) {
topNav.removeClass(highlighted);
}
}
};
highLightMenu();
$(window).on("scroll", function () {
highLightMenu();
});
// 1.3 resizeTopMenu(off-canvas)
var highLightMenu2 = function () {
var topNav = $("header.xmenu-fiexd-top");
var highlighted = "x-highlight";
if ($(document).scrollTop() > topbarHeight) {
if (!topNav.hasClass(highlighted)) {
topNav.addClass(highlighted);
$(".menu-section").css({top: $("#wpadminbar").length ? $("#wpadminbar").height() : 0});
}
} else {
if (topNav.hasClass(highlighted)) {
topNav.removeClass(highlighted);
$(".menu-section").css({top: "auto"});
}
}
};
highLightMenu2();
$(document).on("scroll", function () {
highLightMenu2();
});
// 2. Smooth scrolling
if (!$.browser.mobile && typeof($.fn.niceScroll) == "function") {
var barOpts = {
cursorcolor: "#888",
cursorwidth: "7px",
cursorborder: "1px solid #888",
horizrailenabled: false,
zindex: 999999
};
// nice scroll bar for right popup menu
if ($("nav.xmenu").length) {
$("nav.xmenu").niceScroll(barOpts);
$("nav.xmenu li").on("click", function () {
// enable nice scroll for dynamic contents
setTimeout(function () {
$("nav.xmenu").getNiceScroll().resize()
}, 300);
});
}
}
// 3. Tooltip
if (typeof($.tooltip) == "function") {
$("[data-toggle=\"tooltip\"]").tooltip();
}
// 4. Message box
if (typeof($.message_boxes) == "function") {
$.message_boxes();
}
// 5. Bootstrap Responsive Tab
if (typeof(fakewaffle) == "object") {
fakewaffle.responsiveTabs(['xs', 'sm']);
}
// initial function, it is running when contents are loaded fully
var initFunc = function () {
// 6. carousel for client boxes
if (typeof($.start_owlcarousel) == "function") {
$.start_owlcarousel();
}
// 7. Parallax animation
if (typeof($.parallax_animation) == "function") {
$.parallax_animation();
}
// 8. Text animation
if (typeof($.text_animation) == "function") {
$.text_animation();
}
// 9. Progress bar
if (typeof($.progressbar) == "function") {
$.progressbar();
}
// 10. Counter
if (typeof($.counter) == "function") {
$.counter();
}
// 11. Get star marks
if (typeof($.set_star_marks) == "function") {
$.set_star_marks();
}
// 12. Get countdown info
if (typeof($.get_countdown_info) == "function") {
$.get_countdown_info();
}
// 13. Filter Box
if (typeof($.fn.filter_box) == "function") {
$(".filter-wrap").each(function () {
var opts = parseInt($(this).data("filter-col")) > 0 ? {col: parseInt($(this).data("filter-col"))} : {};
$(this).filter_box(opts);
});
}
// 14. Masonry Grid
if ($(".grid-container").length && typeof($.fn.masonryGrid) == "function") {
$(".grid-container").masonryGrid();
}
// 15. Slick slider
if (typeof($.start_slick) == "function") {
$.start_slick();
}
// show wrapper with fade effect
$("body").addClass("body-loaded");
};
// 16. Pre-load
if ($("[data-preload-progress]").length && typeof($.preloader) == "function") {
var preloaderOpt = $("[data-preload-progress]").data("preload-progress").split("|");
$.preloader({
preloaderPercentEnable: preloaderOpt[1],
preloaderLogo: preloaderOpt[0]
}, initFunc);
} else if ($("body[data-preload-default]").length && $("body[data-preload-default]").data("preload-default")) {
var preloaderTpl = "\
\
\
\
";
// add div for pre-load
var preloader = $(preloaderTpl).appendTo($("body")).show();
// show wrapper when full contents are loaded
$(window).on("load", function () {
initFunc(); // initial callback
// remove div for pre-load
preloader.fadeOut(600, function () {
$(this).remove();
});
});
} else {
initFunc(); // initial callback
}
// 17. pricing table
$(".pricing-table").on("mouseenter mouseleave", function () {
$(this).toggleClass("pricing-table-highlight");
});
// 18. Smooth Scrolling to Target
$(".x-menu-wrapper a, nav.xmenu a, a.btn-circle, [data-go]").on("click", function (event) {
// Make sure this.hash has a value before overriding default behavior
var hash = this.hash;
if (hash && $(hash).length) {
if ($(hash).hasClass("woo-menu-item")) {
return;
}
// Prevent default anchor click behavior
event.preventDefault();
var revisionTop = $("body").hasClass("x-menu-fixed-top") ? $(".x-menu-wrapper").height() : 0;
// Using jQuery's animate() method to add smooth page scroll
// The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area
var scrollTime = ($(hash).offset().top - $(document).scrollTop()) / 2,
targetScrollTop = $(hash).offset().top - revisionTop;
scrollTime = scrollTime > 1200 ? 1200 : scrollTime < 900 ? 900 : scrollTime; // from 600ms to 1200ms
// Add hash (#) to URL when done scrolling (default click behavior)
if(history.pushState) {
history.pushState(null, null, hash);
}
else {
window.location.hash = hash;
}
// scrolling animation
$("html, body").animate({
scrollTop: targetScrollTop > 0 ? targetScrollTop : 0
}, scrollTime);
} // End if
});
// 19. go to top
var topBtn = $("")
.appendTo($("body"))
.addClass("goto-top")
.on("click", function () {
var curPos = $(document).scrollTop() / 2;
curPos = curPos > 1200 ? 1200 : curPos < 900 ? 900 : curPos; // from 600ms to 1200ms
$("html, body").animate({
scrollTop: 0
}, curPos > 1200 ? 1200 : curPos);
}),
visiblePos = $(window).height() < 300 ? $(window).height() : 300,
smartBtn = function () {
if ($(document).scrollTop() > visiblePos) {
topBtn.addClass("active");
} else {
topBtn.removeClass("active");
}
};
smartBtn();
$(window).on("scroll", function () {
smartBtn();
});
// 20. Audio
if (typeof($.fn.audioPlayer) == "function") {
$(".wp-playlist audio, audio.wp-audio-shortcode").addClass("embed-audio");
$("audio").each(function() {
if (!$(this).hasClass("embed-audio")) {
$(this).audioPlayer(); // render audio control box
}
});
}
// 21. Social Sharing in header
if ($(".social-share-link").length) {
$(document).on("click", ".social-share-link", function (e) {
e.preventDefault();
var width = 600,
height = 540,
top = ($(window).height() - height) / 2,
left = ($(window).width() - width) / 2,
option = "menubar=no,toolbar=no,resizable=yes,scrollbars=yes,top=" + top + ",left=" + left + ",width=" + width + ",height=" + height;
window.open($(this).attr("href"), "Share", option);
});
}
// 22. Datepicker
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());
if (typeof($.fn.datepicker) == "function" && ($("input[type=date]").prop('type') != "date" || $.browser.chrome)) {
$("input[type=date]").datepicker({
dateFormat: "yy-mm-dd",
showOtherMonths: true,
selectOtherMonths: true
});
}
////////////////////////
});
// document ready
})(jQuery);
// source --> https://sportvitalitas.hu/static/js/woocommerce.js
/**
* Custom Javascript for WooCommerce
*
* @package RaiseApp
* @version RaiseApp 1.3.0
*/
(function ($) {
"use strict";
// library function
$.extend({
// close quick view popup
closeQuickview: function () {
$(".popup-quickview-wrap.opened").fadeOut(300, function () {
$(this).remove();
$("body").css({"overflow-y": "auto"});
});
},
// get string width in pixel
getWidthOfText: function(txt, fontsize, fontname) {
var span = $("").appendTo("body").text(txt).css({
"height": "0",
"display": "inline-block",
"visibility": "hidden",
"font-size": fontsize,
"font-family": fontname
}),
width = span.width();
span.remove();
return width;
}
});
// update count of menu icon by ajax cart
$(document).ajaxComplete(function (event, xhr, settings) {
if (xhr.responseJSON && xhr.responseJSON.fragments) {
var response = xhr.responseJSON.fragments["div.widget_shopping_cart_content"];
if (response) {
var list = $("#minicart-list").html(response),
total = list.find(".woocommerce-mini-cart-item").length;
var numObj = $(".mini-cart-num");
if (total) {
if (numObj.children("span").length) {
numObj.children("span").text(total).show();
} else {
numObj.append("" + total + "");
}
} else {
numObj.children("span").remove();
}
}
}
});
// Menu section
$(document).on("click", ".woo-menu .woo-menu-item > a", function(e) {
if($(this).hasClass('wishlist-num')) {
return;
}
e.preventDefault();
var menuItem = $(this).closest(".woo-menu-item");
if(!menuItem.hasClass("active")) {
menuItem.siblings(".woo-menu-item").removeClass("active");
menuItem.addClass("active");
}
});
$(document).on("click", ".woo-menu .woo-menu-item.woo-menu-search > a", function() {
$(this).siblings(".woo-submenu").find(".search-field").focus();
});
$(document).on("click", function (e) {
if (!$(e.target).closest(".woo-menu").length) {
$(".woo-menu .woo-menu-item").removeClass("active");
}
});
// mobile tab
$(document).on("click", "#woo-menu-mobile-tab a", function (e) {
if($(this).hasClass('wishlist-num')) {
return;
}
e.preventDefault();
var submenu = $($(this).attr("href")).children(".woo-submenu");
if (submenu.length && !submenu.is(":visible")) {
$(".woo-submenu").slideUp(300);
submenu.slideDown(300);
} else {
submenu.slideUp(300);
}
});
// responsive
$(window).on("resize", function () {
$(".woo-submenu").hide();
});
// add tip to price filter widget
$(document).ready(function () {
setTimeout(function() {
$(".price_slider_wrapper .price_slider.ui-slider.ui-slider-horizontal").each(function () {
// ToolTip
var tooltipWrap = $(this).closest(".price_slider_wrapper"),
tooltipStart = "",
tooltipEnd = "
",
fromValue = tooltipWrap.find(".price_slider_amount span.from").text(),
tooltipFrom = tooltipStart + "" + fromValue + "" + tooltipEnd,
toValue = tooltipWrap.find(".price_slider_amount span.to").text(),
tooltipTo = tooltipStart + "" + toValue + "" + tooltipEnd;
$(tooltipFrom).appendTo(tooltipWrap.find(".ui-slider-handle")[0]).show();
$(tooltipTo).appendTo(tooltipWrap.find(".ui-slider-handle")[1]).show();
});
}, 200);
});
// woocommerce quantity input box's decrement button
$(document).on("click", ".btn-quantity-decrement", function (e) {
var inputElem = $(this).parent().children("input[type=number]");
var newVal = parseInt(inputElem.val()) - 1;
if (newVal > 0) {
inputElem.val(newVal);
} else {
inputElem.val(0);
}
$('.woocommerce-cart-form input[name="update_cart"]').prop('disabled', false);
});
// woocommerce quantity input box's increment button
$(document).on("click", ".btn-quantity-increment", function (e) {
var inputElem = $(this).parent().children("input[type=number]");
var newVal = parseInt(inputElem.val()) + 1;
if (newVal > 0) {
inputElem.val(newVal);
} else {
inputElem.val(0);
}
$('.woocommerce-cart-form input[name="update_cart"]').prop('disabled', false);
});
// woocommerce update cart button
$(document).on("click", "a.update-cart", function (e) {
e.preventDefault();
$(this).parent().children('input[name="update_cart"]').click();
});
// woocommerce apply coupon button
$(document).on("click", "a.apply-coupon", function (e) {
e.preventDefault();
$(this).parent().children('input[name="apply_coupon"]').click();
});
// woocommerce place order button
$(document).on("click", "a.btn-place-order", function (e) {
e.preventDefault();
$(this).parent().children('input[name="woocommerce_checkout_place_order"]').click();
});
// shop product list - auto load more
$.loadmore_shop = function () {
var moreBtn = $("[data-shop-load-more]"),
contentWrap = $("#products-list"),
moreNum = moreBtn.data("shop-load-num"),
moreMaxNum = moreBtn.data("shop-load-maxnum"),
layout = moreBtn.data("shop-load-more") ? moreBtn.data("shop-load-more") : "grid",
filterStr = moreBtn.data("shop-load-filter"),
additional_params = moreBtn.data("shop-params"),
preloader = $.ajaxPreloader(moreBtn);
// start ajax call
$.isAjaxing = true;
moreBtn.show(); // hide more button
preloader.show(); // show preloader
$.ajax({
type: "POST",
url: raiseapp_var.ajax_url + "?" + additional_params,
data: {
action: "raiseapp_load_more",
type: "product",
tpl: "shop_list",
layout: layout,
paged: moreNum + 1,
filter: filterStr
},
success: function (response) {
// it not error
if (response != "error") {
// remove preloader
preloader.hide().remove();
// countdown for next ajax calling
moreNum++;
if (moreNum < moreMaxNum) {
moreBtn.data("shop-load-num", moreNum);
} else if (moreNum >= moreMaxNum) {
moreBtn.remove(); // if no more posts
}
// add new contents into container if wrap is not gridalicious
switch ($("[data-shop-list]").data("shop-list")) {
case "masonry":
contentWrap.masonryGrid_append(response);
break;
default:
contentWrap.append(response);
break;
}
}
$.isAjaxing = false;
},
error: function (XMLHttpRequest, textStatus, err) {
console.log(err);
}
});
};
$(document).ready(function () {
// blog post list - auto load more
if ($("[data-shop-load-more]").length) {
$(window).on("scroll", function () {
var shopLoader = $("[data-shop-load-more]"),
wT = $(document).scrollTop(),
wH = $(window).height();
if (shopLoader.length && shopLoader.offset().top + 120 < wT + wH && $.isAjaxing == false) {
$.loadmore_shop();
}
});
}
// implementation
var bootstrapMasonry = function() {
setTimeout(function() {
$(".product-masonryGrid").each(function() {
$(this).masonryGrid();
});
}, 600);
};
if ($(".product-masonryGrid").length) {
if (($("[data-preload-progress]").length && typeof($.preloader) == "function") ||
($("body[data-preload-default]").length && $("body[data-preload-default]").data("preload-default"))) {
$(window).load(function() {
bootstrapMasonry();
});
} else {
bootstrapMasonry();
}
}
});
// quick view in product list
$.quickviewOpened = 0;
$(document).on("click", ".product-quickview", function (e) {
e.preventDefault();
// ajax calling counter
$.quickviewOpened = 0;
// create popup
$("body").css({"overflow-y": "hidden"}).append("\
\
");
var product = $(this).data("product"),
quickview = $(".popup-quickview-wrap").addClass("opened"), // quick view popup wrapper
quickviewCont = $(".popup-quickview-content"), // contents section in quick view popup
preloader = $.ajaxPreloader(quickviewCont).show(), // preloader for ajax calling
preloaderEnd = function () { // remove preloader
$.quickviewOpened++;
if ($.quickviewOpened > 1) {
preloader.hide().remove();
}
};
// get content by ajax calling
$.post(
raiseapp_var.ajax_url,
{
action: "raiseapp_product_quickview",
initial: true
},
function (response) {
preloaderEnd();
quickview.append(response);
}
);
$.post(
raiseapp_var.ajax_url,
{
action: "raiseapp_product_quickview",
product: product
},
function (response) {
quickviewCont.addClass("loaded").html(response);
$(".variations_form").each(function () {
$(this).wc_variation_form();
});
var imgs = $(".woocommerce-product-gallery").find("img"),
loaded = imgs.length;
if(loaded == 0) {
$(window).trigger("resize"); // restart thumbnail gallery
quickviewCont.addClass("show-product"); // show product
} else {
var quickViewComplete = function() {
loaded--;
if(loaded == 0) {
preloaderEnd();
setTimeout(function () {
// repair slider effect
$(".woocommerce-product-gallery .flex-control-nav li:last-child img").trigger("click");
$(".woocommerce-product-gallery .flex-control-nav li:first-child img").trigger("click");
// restart thumbnail gallery
$(window).trigger("resize");
// show product
quickviewCont.addClass("show-product");
}, 500);
}
};
imgs.each(function() {
if (this.complete) {
quickViewComplete($(this));
} else {
$(this).load(function() {
quickViewComplete($(this));
});
}
});
}
}
);
});
// close quick view popup
$(document).on("click", ".popup-quickview-overlay", function (e) {
if ($.quickviewOpened > 1) {
e.preventDefault();
$.closeQuickview();
}
});
$(document).on("click", ".popup-quickview-closer", function (e) {
e.preventDefault();
$.closeQuickview();
});
// advanced product search vc-addon
$(document).ready(function () {
$("[data-advanced-search]").each(function () {
var searchFormWrap = $(this),
searchCat = searchFormWrap.find("[name=\"product_cat\"]"),
searchMin = searchFormWrap.find("[name=\"min_price\"]"),
searchMax = searchFormWrap.find("[name=\"max_price\"]");
// rebuild category select box
searchCat.wrap("");
var searchCatWrap = searchFormWrap.find(".advanced-search-category"),
searchCatView = "";
searchCatView = "";
searchCatView += "";
searchCat.find("option").each(function () {
searchCatView += "- " + $(this).text() + "
";
});
searchCatView += "
";
searchCatWrap.append(searchCatView);
// add event callback for custom select box
searchCatWrap.on("click", "span", function (e) {
e.preventDefault();
$(this).closest(".advanced-search-category").toggleClass("opened");
});
searchCatWrap.on("click", "li", function (e) {
e.preventDefault();
var searchFormWrap = $(this).closest("[data-advanced-search]"),
searchCat = searchFormWrap.find("[name=\"product_cat\"]"),
searchMin = searchFormWrap.find("[name=\"min_price\"]"),
searchMax = searchFormWrap.find("[name=\"max_price\"]");
searchCat.val($(this).data("cat")); // change value of select
var optionElem = searchCat.children("option:selected"),
min = parseFloat(optionElem.data("min")),
max = parseFloat(optionElem.data("max"));
searchCatWrap.children("span").text(optionElem.text()).data({min: min, max: max}); // change text of custom select box
searchMin.val(parseFloat(optionElem.data("min"))); // reset min price as selected category
searchMax.val(parseFloat(optionElem.data("max"))); // reset min price as selected category
searchFormWrap.find("input[type=\"number\"]").trigger("keyup");
// apply selectable css
searchCatWrap.removeClass("opened");
$(this).siblings().removeClass("active");
$(this).addClass("active");
});
searchCatWrap.on("change", searchCat, function () {
$(this).closest("[data-advanced-search]").find("li[data-cat=\"" + searchCat.children("option:selected").attr("value") + "\"]").trigger("click");
});
// reset price input box by dynamical width
searchFormWrap.find("input[type=\"number\"]").on("keyup keypress", function() {
var width = $.getWidthOfText($(this).val(), $(this).css("font-size"), $(this).css("font-family"));
$(this).width(width);
});
searchCat.trigger("change");
$.fn.extend({
resetByTerm: function(v) {
var searchFormWrap = $(this).closest("[data-advanced-search]"),
searchCat = searchFormWrap.find("[name=\"product_cat\"]"),
optionElem = searchCat.children("option:selected"),
defaultMin = optionElem.data("min"),
defaultMax = optionElem.data("max");
if(v < defaultMin) {
v = defaultMin;
} else if(v > defaultMax) {
v = defaultMax;
}
$(this).val(v).trigger("keyup");
return $(this);
}
});
// min/max price input validation
searchMin.on("change", function(e) {
e.preventDefault();
var searchFormWrap = $(this).closest("[data-advanced-search]"),
searchMax = searchFormWrap.find("[name=\"max_price\"]"),
price = parseFloat($(this).val()),
max = parseFloat(searchMax.val());
if(price > max) {
$(this).resetByTerm(max);
} else {
$(this).resetByTerm(price);
}
});
searchMax.on("change", function(e) {
e.preventDefault();
var searchFormWrap = $(this).closest("[data-advanced-search]"),
searchMin = searchFormWrap.find("[name=\"min_price\"]"),
price = parseFloat($(this).val()),
min = parseFloat(searchMin.val());
if(price < min) {
$(this).resetByTerm(min)
} else {
$(this).resetByTerm(price);
}
});
});
});
$(document).on("click", function (e) {
if (!$(e.target).closest(".advanced-search-category").length) {
if ($(".advanced-search-category ul").is(":visible")) {
$(".advanced-search-category").removeClass("opened");
}
}
});
// woocommerce wishlist
$(document).ready(function() {
$('.add-to-wishlist-button').on('click', function (e) {
e.preventDefault();
var el = $(this);
if(el.parent().find('.yith-wcwl-wishlistaddedbrowse').hasClass('show') || el.parent().find('.yith-wcwl-wishlistexistsbrowse').hasClass('show')){
var link = el.parent().find('.yith-wcwl-wishlistexistsbrowse a').attr('href');
window.location.href = link;
return;
}
el.addClass('loading');
el.parent().find('.add_to_wishlist').click();
});
var raiseapp_add_to_wishlist = function() {
$('.add-to-wishlist-button.loading').removeClass('loading').addClass('wishlist-added');
$.ajax({
beforeSend: function () {
},
complete: function () {
},
data: {
action: 'raiseapp_update_wishlist_count'
},
dataType: 'json',
success: function (data) {
var numObj = $(".wishlist-num");
var count = data.count;
if (count > 0) {
if (numObj.children("span").length) {
numObj.children("span").text(count).show();
} else {
numObj.append("" + count + "");
}
} else {
numObj.children("span").remove();
}
},
url: yith_wcwl_l10n.ajax_url
});
};
$('body').on('added_to_wishlist removed_from_wishlist', raiseapp_add_to_wishlist);
});
})(jQuery);